-
Notifications
You must be signed in to change notification settings - Fork 152
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor setup and modernize package structure as well as CI #287
Conversation
… versioning; all tool configs in pyproject.toml
…sion of the package
Hey @MuellerSeb,
decide: should black and isort be applied?
|
I would still argue against putting them into the spotpy namespace. If they are under the
Cool!
Also cool!
Will do so!
Check!
I would shift that to a later pull request, since that would make
I can also reset that short before merging. |
You are right, separating the spot_setup example from the tutorials makes sense. With your restructuring, it is easy to just plug and play the tutorials and load the examples from the source code. It also makes sense, as at some point in the future I planed to make jupyter notebooks out of these tutorials, which also do not belong into the source code. Thank you for this suggestion!
Ok, let's wait with this one and push this pull request first |
So good to see all the new tests and features! Is there anything missing for the coveralls testing at this point? |
@thouska I think we are almost ready. If I add the coveralls upload and prepare the CI script for the merge, the CI on my side will not run. But we should that then test later on in this repository. I think this PR is ready. Other stuff should be done later on in separate PRs:
One last question: Can I add myself to the author list? 😉 |
@thouska added the missing github token env var. |
I think hymod.py is currently compiled with jit, so I wouldn't expect too much more speed potential with cython, but feel free to surprise me :)
I will do that, once I
I guess you have something in mind there?
Spontaneously, I wouldn't know how to do that
Yes, you can :) |
Ok. I am just wondering about the unix version (I guess the exe version is working on most windows versions). There is a makefile to compile the cython extension. Would it maybe make sense to put hymod into a separate python package? I don't think it is a good idea to have a makefile in the source of spotpy.
I always update the changelog as the last thing before the tag, so the correct changelog is part of the release. It could a good idea, to create a release candidate as a pre-release with As just written, I would go to
Update info about
No problem. This is rather easy.
Whoop whoop. 🎉 FinallyThis can be merged now. Everything else could be cleaned up later. |
@MuellerSeb Thank you from my side also. Sorry for not responding earlier. What would you and @thouska think of moving hymod (and especially c-hymod) to another repo and make it an optional dependency of spotpy? That way, building spotpy from source would not require a compiler and deployment of new versions is simpler (no need for a binary release for each Python version, and the manylinux magic is not necessary). |
That was my thought as well. in GSTools for example, we use wheels to distribute compiled extensions, so there is also no need to have a compiler at least for the most common systems and python versions (MacOS (x64 and arm), Windows (32bit+64bit), Linux (32bit+64bit) for py3.7 - py3.10. Since it is only a cython file, this is very easy to do and the compilation could be done in the CI using cibuildwheel. What is the difference between |
All right, let's bring this good stuff to the master branch. Thousand thanks again for your contribution @MuellerSeb and your feedback @abravalheri! All remaining tasks that popped up during the pull request can be followed up on in #288 |
CHANGES
setuptools>=62
and Python >= 3.7_version.py
when building sdist and wheelsrc/
based package structure for easier testing and so setuptools finds the correct package datablack .
andisort .
not yet applied to keep changes low)TODOs
"refactor_setup"
from CI (was added for testing here)v1.6.0
orv1.6.0-rc1
NOTES
Since I introduced
setuptools_scm
to derive the version, there is no need to put the version by hand anywhere.Pros
_version.py
will be generated automatically when installing with pip (even editable), or when building sdist / wheel1.5.17.dev18
)v
in tagmajor.minor.patch
: i.e.v1.5.18
v1.5.18-beta
,v1.5.18-rc1
Cons
0.0.0.dev0
(see here for a solution, but IMHO it's a corner case that should be discouraged)